For I=0 To 2 : Bar 217,229+I*9 To 475,234+I*9 : Next I
Ink 1
Bar 217,230 To 218+X0*17,233
Bar 217,239 To 218+X1*17,242
Bar 217,248 To 218+X2*17,251
_G[15+P2*50,228,55+P2*50,253,0]
P2=P
_G[15+P*50,228,55+P*50,253,1]
Colour Back Colour(0)
Screen Show
Repeat : Until Mouse Key=0
Return
End Proc
Procedure _GETDAY
X=2000
Y=6
FILE$=Space$(10)
_TXT["Enter state of day..:"]
_EINGABE[23]
S=Val(XFILE$)
'
_TXT["Enter state of month:"]
_EINGABE[23]
M=Val(XFILE$)
'
_TXT["Enter state of year.:"]
_EINGABE[23]
H=Val(XFILE$)
'
If S<32 and S>0 and M<13 and M>0 and H>1581 and H<2001 Then Else _TXT["Please use this format: DD.MM.YYYY <Year min. 1582 - Year max. 2000> !"] : Pop Proc
'
For I=X-1 To H Step -1
If I mod 400=0 or I mod 4=0
Add Y,-2 : I2=1
Else
Dec Y : I2=0
End If
If I mod 100=0 and I mod 400<>0 Then Inc Y : I2=0
If Y<1 Then Add Y,7
Next I
'
Restore MT
'
For I=1 To M-1
Read A
Add N,A
Next I
'
Add N,S-1
If I2=1 and M>2 Then Inc N
Add Y,(N mod 7) : If Y>7 Then Add Y,-7
If I2=0 and M=2 and S>28 : _TXT["The date of "+Str$(S)-" "+"."+Str$(M)-" "+"."+Str$(H)-" "+" doesn`t exist !"] : Pop Proc : End If
Restore WT
For I=1 To Y : Read N$ : Next I
_TXT["The day of "+Str$(S)-" "+"."+Str$(M)-" "+"."+Str$(H)-" "+" is a "+N$]
'
MT: Data 31,28,31,30,31,30,31,31,30,31,30,31
WT: Data "Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"
End Proc
Procedure _OPENWB
LVOOPENWORKBENCH=Intcall(-210)
If LVOOPENWORKBENCH=0
_TXT["Can`t open Workbench, not enough memory"]
Else
_TXT["Workbench is opened !"]
End If
End Proc
Procedure _CLOSEWB
LVOCLOSEWORKBENCH=Intcall(-78)
If LVOCLOSEWORKBENCH=0
_TXT["Can`t close Workbench !"]
Else
_TXT["Workbench is closed !"]
End If
End Proc
Procedure _CLOSE
_TXT["Press left AMIGA + A to come back to AmBOS !"]
Wait 90
Amos To Back
Screen Close 0
Repeat
Multi Wait
Until Amos Here
_INSTALLAMBOS
_INSTALLSCREEN
End Proc
Procedure _ABOUT
Wait 20
Ink 0 : Bar 0,15 To 640,222
For I=1 To 18
Read Y,N$
X=Text Length(N$)
If X<97 Then Ink 2 Else Ink 1
Text 320-X/2,Y,N$
Next I
While Asc(Inkey$)=0 and Mouse Key=0 : Wend
_INSTALLSCREEN
Data 22,"About"
Data 33,"AmBOS V2.0b is written in AMOS V1.31 and compiled with ACmp V1.0 !"
Data 49,"Greatings to"
Data 60,"Frank, Jork, Karsten, Silke, Halime, Ursel, Melanie, Hermann, Momo"
Data 68,"Jens (Falderi Faldera), Axel, Detlef (Wurzelsepp), Richy, Christina"
Data 76,"Anja, Jennifer, Giofranco, Wolli, Bernd (Bänger), Jesus, Robbi, Sonja"
Data 84,"Jaquline, Jörg, Fracois, and last but not least Big Humphrey the rabbit"
Data 100,"Thanx"
Data 111,"`Kaffee KrÜmmel' and `Rocknacht' for its great atmosphere !"
Data 119,"`Al Bundy and the rest' for being so incredible cool, cool, cool !"
Data 135,"Important"
Data 146,"If you found some bugs or have some good ideas and you are able to"
Data 154,"program in AMOS, so you can change it like you need it ! The only"
Data 162,"I beg for is to send me the latest update of the new version of AmBOS."
Data 179,"Write to"
Data 190,"Volker Stepprath, Spandauerstrasse 4, 40789 Monheim, Germany"
Data 206,"PS"
Data 217,"Press the Help key and one menuoption to explain it !"
End Proc
Procedure _EDITOR
On Error Goto _FEHLER
If XSD=0
A$=XDISKNAMEA$
B$=XDISKNAMEB$
A=XANZA#
Else
A$=XDISKNAMEB$
B$=XDISKNAMEA$
A=XANZB#
End If
For I=0 To A
If XSD=0
N$=XDIRA$(I)
N=XSTATUSA(I)
Else
N$=XDIRB$(I)
N=XSTATUSB(I)
End If
If N=-2 Then Pop Proc
If N=1 and Instr(N$,"[DIR]")=0
FGR=Val(Right$(N$,8))
_REALNAME[N$]
NF$=XFILE$
Reserve As Data 7,FGR
If XE : Pop Proc : End If
Bload A$+NF$,7
If XE
Erase 7
Pop Proc
End If
_EDIT[B$,NF$,FGR]
Erase 7
I2=True
End If
Next I
If I2=False
FGR=1920
NF$="NoNamed"
Reserve As Data 7,1920
_EDIT[B$,NF$,FGR]
Erase 7
End If
'
_INSTALLSCREEN
If XSD=0 Then _CLEAR[0] Else _CLEAR[1]
Pop Proc
'
_FEHLER:
XE=Errn
_ERROR[XE]
Resume Next
End Proc
Procedure _DISKCOPY
_TXT["Sourcedrive (0-3):"]
_EINGABE[20]
XSOURCE=Abs(Val(XFILE$))
N0$="DF"+Str$(XSOURCE)-" "+":"
If Drive(N0$)=0
_TXT[N0$+" not available !"]
Pop Proc
End If
'
_TXT["Targetdrive (0-3):"]
_EINGABE[20]
XTARGET=Abs(Val(XFILE$))
N1$="DF"+Str$(XTARGET)-" "+":"
If Drive(N1$)=0
_TXT[N1$+" not available !"]
Pop Proc
End If
'
If XSOURCE=XTARGET
_TXT["Sourcedrive & Targetdrive must be different !"]
Pop Proc
End If
'
_TXT["Insert sourcedisk in drive "+N0$+" !"]
_TXT["Insert targetdisk in drive "+N1$+" !"]
_TXT["Press any key to start diskcopy <ESC = Abort> !"]
Repeat
N=Asc(Inkey$)
Until N
If N=27 Then _TXT["Diskcopy aborted !"] : Pop Proc
_TXT[""]
'
Reserve As Chip Data 7,5632
DISKREP$=Space$(40)+Chr$(0)
DEVNAME$="trackdisk.device"+Chr$(0)
DISKREP=Varptr(DISKREP$)
IOREQ$=Space$(80)+Chr$(0)
IOREQADR=Varptr(IOREQ$)
IOREQ2$=Space$(80)+Chr$(0)
IOREQADR2=Varptr(IOREQ2$)
Areg(0)=0
Areg(1)=0
Dreg(0)=0
Dreg(1)=0
LVOFINDTASK=Execall(-294)
Loke DISKREP+$10,LVOFINDTASK
Areg(0)=Varptr(DEVNAME$)
'
Areg(1)=IOREQADR
Dreg(0)=XSOURCE
LVOOPENDEVICE=Execall(-444)
'
Areg(1)=IOREQADR2
Dreg(0)=XTARGET
LVOOPENDEVICE=Execall(-444)
'
Loke IOREQADR+14,DISKREP
Doke IOREQADR+28,2
Loke IOREQADR+36,5632
Loke IOREQADR+40,Start(7)
Loke IOREQADR2+14,DISKREP
Doke IOREQADR2+28,11
Loke IOREQADR2+36,5632
Loke IOREQADR2+40,Start(7)
'
Gosub _DISKCOPY
'
Areg(1)=IOREQADR
Doke IOREQADR+28,9
Loke IOREQADR+36,0
LVODOIO=Execall(-456)
'
Areg(1)=IOREQADR2
Doke IOREQADR2+28,9
Loke IOREQADR2+36,0
LVODOIO=Execall(-456)
'
Areg(1)=IOREQADR
LVOCLOSEDEVICE=Execall(-450)
Areg(1)=IOREQADR2
LVOCLOSEDEVICE=Execall(-450)
'
Erase 7
Pop Proc
'
_DISKCOPY:
For TRACK=0 To 159
Text 22,250,"Reading cylinder #"+Str$(I)-" "+" , head"+Str$(I2)+" !"
Areg(1)=IOREQADR
Loke IOREQADR+44,TRACK*5632
LVODOIO=Execall(-456)
If LVODOIO=29
_TXT["No disk in drive "+N0$+" !"]
Return
End If
If LVODOIO<>0
Text 22,250,"TDERR #"+Str$(LVODOIO)-" "+" occured while reading cylinder #"+Str$(I)-" "+" , head"+Str$(I2)+" !"
_TXT[""]
End If
'
Text 22,250,"Writing cylinder #"+Str$(I)-" "+" , head"+Str$(I2)+" !"
Areg(1)=IOREQADR2
Loke IOREQADR2+44,TRACK*5632
LVODOIO=Execall(-456)
If LVODOIO=28
_TXT["Disk in drive "+N1$+" is write protected !"]
Return
End If
If LVODOIO=29
_TXT["No disk in drive "+N1$+" !"]
Return
End If
'
If Asc(Inkey$)=27
_TXT["Diskcopy aborted !"]
Return
End If
'
Add I,I2
Add I2,1,0 To 1
Next TRACK
_TXT["Diskcopy finished !"]
Return
End Proc
Procedure _FORMAT
_DISKIT[1]
End Proc
Procedure _VERIFY
_DISKIT[5]
End Proc
Procedure _INSTALL
_DISKIT[2]
End Proc
Procedure _BLKDAT
_DISKIT[3]
End Proc
Procedure _DATBLK
_DISKIT[4]
End Proc
Procedure _EXIT
If Exist("SYS:") Then Dir$="SYS:"
Request On
Wait 30
End
End Proc
'
'**** MenÜ D
Procedure _CREATE
On Error Goto _FEHLER
Do
_TXT["Select gadget for new command <CREATE=Save/Abort>"]
Repeat : Until Mouse Key=0
While Mouse Key=0 : Wend
X=X Screen(X Mouse) : Y=Y Screen(Y Mouse)
'
If Y>194 and Y<208
X=X/80 : Y=195
_G[X*80+1,195,X*80+78,207,1]
End If
If X<558 and Y>209 and Y<223
X=X/80 : Y=210
_G[X*80+1,210,X*80+78,222,1]
Add X,8
End If
'
If X>13 and Y>209 and Y<223 Then Clear Key : Exit
I2=True
'
Ink 1 : _TXT["Enter menuname:"]
_EINGABE[17]
N$=XFILE$
Ink 1 : _TXT["Enter commandline:"]
_EINGABE[20]
N$=N$+"="+XFILE$
If N$="=" Then N$=""
For I=0 To 31 : N$=N$-Chr$(I) : Next I
XMEND$(X)=N$
'
_MENU[3]
If X>7 Then Add X,-8
_G[X*80+1,Y,X*80+78,Y+12,0]
Loop
'
If I2
If Exist("SYS:S/")
Open Out 1,"SYS:S/.ambosmenu"
If XE : Pop Proc : End If
For I=0 To 13
Print #1,XMEND$(I)
Next I
Close 1
Else
_TXT["SYS:S/ not available !"]
End If
End If
Pop Proc
'
_FEHLER:
XE=Errn
_ERROR[XE]
Resume Next
End Proc
'
'**** Unterfunktionen
Procedure _ALL[N]
If N=0
For I=0 To XANZA#
If XSTATUSA(I)<>-2 : XSTATUSA(I)=1 : End If
Next I
_SHOWDIR[0]
Else
For I=0 To XANZB#
If XSTATUSB(I)<>-2 : XSTATUSB(I)=1 : End If
Next I
_SHOWDIR[1]
End If
End Proc
Procedure _CALLCOMMAND[N]
Wait 15
N$=XMEND$(N)
If N$="" Then Pop Proc
If N$="CREATE=" Then _CREATE : Pop Proc
N=Instr(N$,"=")
N$=Mid$(N$,N+1,Len(N$)-N)+Chr$(0)
XFILE$=N$
_RUN
End Proc
Procedure _CLEAR[N]
If N=0
For I=0 To XANZA#
If XSTATUSA(I)<>-2 : XSTATUSA(I)=0 : End If
Next I
_SHOWDIR[0]
Else
For I=0 To XANZB#
If XSTATUSB(I)<>-2 : XSTATUSB(I)=0 : End If
Next I
_SHOWDIR[1]
End If
End Proc
Procedure _DISKIT[N]
If XSD=0 Then B$=XDISKNAMEB$ : A=XANZB# Else B$=XDISKNAMEA$ : A=XANZA#
'
On Error Goto _FEHLER
'
If N<3
_TXT["Targetdrive (0-3):"]
_EINGABE[20]
XTARGET=Abs(Val(XFILE$))
N1$="DF"+Str$(XTARGET)-" "+":"
If Drive(N1$)=0
_TXT[N1$+" not available !"]
Pop Proc
End If
End If
'
If N=1
_TXT["Insert targetdisk in drive "+N1$+" !"]
_TXT["Press any key when ready <ESC = Abort> !"]
Repeat
N0=Asc(Inkey$)
Until N0
If N0=27
_TXT["Process aborted !"]
Pop Proc
End If
End If
'
If N=3
_TXT["Sourcedrive (0-3):"]
_EINGABE[20]
XTARGET=Abs(Val(XFILE$))
N0$="DF"+Str$(XTARGET)-" "+":"
If Drive(N0$)=0
_TXT[N0$+" not available !"]
Pop Proc
End If
_TXT["Startblock (0-1758):"]
_EINGABE[22]
N0=Abs(Val(XFILE$))
N0=Min(1758,N0)
_TXT["Endblock ("+Str$(N0)-" "+"-1759):"]
_EINGABE[18+Len(Str$(N0))]
N1=Abs(Val(XFILE$))
N1=Min(1759,N1)
If N0>N1 : Swap N0,N1 : End If
_TXT["Filename:"]
_EINGABE[11]
If XFILE$=""
_TXT["Block to file aborted !"]
Pop Proc
End If
End If
'
If N=4
If XSD=0
B$=XDISKNAMEA$
A=XANZA#
Else
B$=XDISKNAMEB$
A=XANZB#
End If
'
For I=0 To A
If XSD=0
N$=XDIRA$(I)
B=XSTATUSA(I)
Else
N$=XDIRB$(I)
B=XSTATUSB(I)
End If
If B=-2
Pop Proc
End If
If B=1 and Instr(N$,"[DIR]")=0
FGR=Val(Right$(N$,8))
_REALNAME[N$]
N$=B$+XFILE$
I=A
End If
Next I
If B=0
_TXT["No file selected !"]
Pop Proc
End If
_TXT["Targetdrive (0-3):"]
_EINGABE[20]
XTARGET=Abs(Val(XFILE$))
N0$="DF"+Str$(XTARGET)-" "+":"
If Drive(N0$)=0
_TXT[N0$+" not available !"]
Pop Proc
End If
_TXT[N$+" to block (0-1759):"]
_EINGABE[21+Len(N$)]
N0=Abs(Val(XFILE$))
N0=Min(1759,N0)
End If
'
If N=5
_TXT["Sourcedrive (0-3):"]
_EINGABE[20]
XTARGET=Abs(Val(XFILE$))
N0$="DF"+Str$(XTARGET)-" "+":"
If Drive(N0$)=0
_TXT[N0$+" not available !"]
Pop Proc
End If
End If
'
Reserve As Chip Data 7,5632
DISKREP$=Space$(40)+Chr$(0)
DEVNAME$="trackdisk.device"+Chr$(0)
IOREQ$=Space$(80)+Chr$(0)
DISKREP=Varptr(DISKREP$)
IOREQADR=Varptr(IOREQ$)
Areg(0)=0
Areg(1)=0
Dreg(0)=0
Dreg(1)=0
XFINDTASK=Execall(-294)
Loke DISKREP+$10,XFINDTASK
Areg(0)=Varptr(DEVNAME$)
Areg(1)=IOREQADR
Dreg(0)=XTARGET
Dreg(1)=0
LVOOPENDEVICE=Execall(-444)
'
Loke IOREQADR+14,DISKREP
Loke IOREQADR+40,Start(7)
Doke IOREQADR+28,11
Loke IOREQADR+36,5632
'
On N Gosub _FORMAT,_INSTALL,_BLKDAT,_DATBLK,_VERIFY
'
Doke IOREQADR+28,9
Loke IOREQADR+36,0
LVODOIO=Execall(-456)
LVOCLOSEDEVICE=Execall(-450)
'
Erase 7
Pop Proc
'
_FORMAT:
_TXT[""]
For TRACK=0 To 159
Text 22,250,"Formatting cylinder #"+Str$(I)-" "+" , head"+Str$(I2)+" !"
Loke IOREQADR+44,TRACK*5632
LVODOIO=Execall(-456)
If LVODOIO
_TXT["TDERR #"+Str$(LVODOIO)+" occured !"]
Return
End If
If Asc(Inkey$)=27 Then _TXT["Format aborted !"] : Return
Add I,I2
Add I2,1,0 To 1
Next TRACK
N=Start(7)
For I=$204 To $2DF
Poke N+I,$FF
Next I
Doke N+2,$2
Poke N+15,$48
Loke N+20,$A661AEF3
Doke N+$13A,$1
Doke N+$13E,$371
Poke N+$1B0,$5
Poke N+$1B1,$45
Poke N+$1B2,$4D
Poke N+$1B3,$50
Poke N+$1B4,$54
Poke N+$1B5,$59
Poke N+$1FF,$1
Loke N+$200,$C000C037
Poke N+$272,$3F
Poke N+$2DC,$3F
Doke IOREQADR+28,11
Loke IOREQADR+44,$6E000
LVODOIO=Execall(-456)
Gosub _INSTALLII
_TXT["Please remove disk to inform validator !"]
Return
'
_INSTALL:
_TXT["What bootblock ?"]
_TXT["[N]oBoot / [D]osBoot / [Q]uartexBoot:"]
_EINGABE[39]
N$=Upper$(XFILE$)
If N$="" Then _TXT["Install aborted !"] : Return
_INSTALLII:
If N$<>"N" and(N$<>"Q") Then N$="D"
For I=0 To 1024 : Poke Start(7)+I,0 : Next I
If N$="N"
Read N : Loke Start(7),N
End If
If N$="D"
Restore _DOSBOOT
For I=0 To 12 : Read N : Loke Start(7)+I*4,N : Next I
End If
If N$="Q"
Restore _QUARTEXBOOT
For I=0 To 255 : Read N : Loke Start(7)+I*4,N : Next I
End If
'
Doke IOREQADR+28,3
Loke IOREQADR+36,1024
Loke IOREQADR+44,0
LVODOIO=Execall(-456)
Doke IOREQADR+28,4
LVODOIO=Execall(-456)
If LVODOIO<>0 Then _TXT["TDERR #"+Str$(LVODOIO)-" "+" occured !"]
Return
'
_BLKDAT:
Open Out 1,B$+XFILE$
If XE Then Return
Close 1
Doke IOREQADR+28,2
Loke IOREQADR+36,512
N$=B$+XFILE$+Chr$(0)
Dreg(1)=Varptr(N$)
Dreg(2)=1006
LVOOPEN=Doscall(-30)
_TXT["Working block:"]
For I=N0 To N1
Text 134,250,Str$(I)
Loke IOREQADR+44,I*512
LVODOIO=Execall(-456)
If LVODOIO<>0
_TXT["TDERR #"+Str$(LVODOIO)-" "+" occured !"]
I=N1
End If
Dreg(1)=LVOOPEN
Dreg(2)=Start(7)
Dreg(3)=512
LVOWRITE=Doscall(-48)
If LVOWRITE<>512
_TXT["DOS error occured !"]
I=N1
End If
Next I
Dreg(1)=LVOOPEN
LVOCLOSE=Doscall(-36)
If XSD=0
_LESEDISK[B$,1]
Else
_LESEDISK[B$,0]
End If
Return
'
_DATBLK:
Open In 1,N$
If XE Then Return
Close 1
_TXT["Blocks used: 0"]
_TXT["Installed..: 0% ( 0 bytes )"]
N$=N$+Chr$(0)
Dreg(1)=Varptr(N$)
Dreg(2)=1005
LVOOPEN=Doscall(-30)
Dreg(1)=LVOOPEN
Dreg(2)=Start(7)
Dreg(3)=512
Loke IOREQADR+36,512
For I=0 To FGR Step 512
LVOREAD=Doscall(-42)
Doke IOREQADR+28,3
Loke IOREQADR+44,N0*512+I
LVODOIO=Execall(-456)
If LVODOIO<>0
_TXT["TDERR #"+Str$(LVODOIO)-" "+" occured !"]
I=FGR
Else
Text 118,242,Str$(I/512)
Text 118,250,Str$(100.0/FGR*(I+LVOREAD))+"%"+" ("+Str$(I+LVOREAD)+" bytes )"
End If
If LVOREAD<512 Then I=FGR
If Asc(Inkey$)=27 Then I=FGR
Next I
Doke IOREQADR+28,4
LVODOIO=Execall(-456)
Dreg(1)=LVOOPEN
LVOCLOSE=Doscall(-36)
Return
'
_VERIFY:
_TXT[""]
Doke IOREQADR+28,2
For TRACK=0 To 159
Text 22,250,"Verifying cylinder #"+Str$(I)-" "+" , head"+Str$(I2)+" !"
If Asc(Inkey$)=27 Then _TXT["Verify aborted !"] : Return
Loke IOREQADR+44,TRACK*5632
LVODOIO=Execall(-456)
If LVODOIO=29 Then _TXT["No disk in drive !"] : Return
If LVODOIO<>0
Text 22,250,"TDERR #"+Str$(LVODOIO)-" "+" on cylinder #"+Str$(I)-" "+" , head"+Str$(I2)+" !"
If I<79 : _TXT[""] : End If
Inc I3
End If
Add I,I2
Add I2,1,0 To 1
Next TRACK
_TXT["# of diskerrors:"+Str$(I3)+" !"]
Return
'
_NOBOOT:
Data $444F5300
_DOSBOOT:
Data $444F5300,$C0200F19,$370,$43FA0018,$4EAEFFA0,$4A80670A,$20402068
Data $167000,$4E7570FF,$60FA646F,$732E6C69,$62726172,$79000000
_QUARTEXBOOT:
Data $444F5300,$1C2238A9,$370,$48E7FF7E,$70026100,$22E7009,$42A90024
Data $6100023A,$41FA03CC,$22690014,$20A9003C,$22690038,$2F0943FA,$2B8303C
Data $4E20222E,$3E0481,$80004,$6B043340,$1E4AAE,$4E6704,$3340000A
Data $43FA02B6,$207A0394,$41E80034,$4A986604,$33400008,$4A986604,$33400012
Data $4A986604,$3340001C,$4AAE002A,$660C4AAE,$2E6606,$4AAE022A,$671A43FA
Data $3237020,$1340001A,$12C012BC,$4145FA,$2D424FC,$56495249,$43F90007
Data $80002449,$4299B3FC,$7F000,$66F62C57,$33FC01A0,$DFF096,$43FA01CE
Data $2D490032,$41F90007,$1000214A,$87001,$223C0000,$300243C,$100
Data $4EAEFE7A,$43F90007,$11004EAE,$FF3A43F9,$71100,$237C0007,$10000004
Data $70014EAE,$FEAA4BFA,$1C87800,$7632181D,$672E610E,$6830000,$1806106
Data $4BED001F,$60E843F9,$71100,$20032204,$4EAEFF10,$43F90007,$1100204D
Data $701F4EAE,$FFC44E75,$33FC8380,$DFF096,$283C000F,$F0002C78,$45384
Data $670000B8,$43FA025A,$C110041,$661243FA,$1663011,$2400F00,$6400100
Data $32805284,$4BF900BF,$E0010815,$66700,$8E102D,$C00422D,$C004600
Data $B03C00A0,$670000D4,$B03C00A2,$660A203C,$80000,$600000C8,$B03C00A4
Data $66164BF9,$FC00D0,$42AE0026,$4EAEFFE2,$41F80002,$4E704ED0,$B03C00A6
Data $6738B03C,$A86606,$4BFAFFEA,$60DEB03C,$AA6756,$B03C00AC,$66040855
Data $1B03C,$AE6612,$47FA020C,$32130841,$53681,$33C100DF,$F1DC6000
Data $FF52207A,$1F241E8,$3470FF,$20C020C0,$20806112,$43FA01E6,$4EAEFFA0
Data $20402068,$167000,$4E75205F,$588F4CDF,$7EFF2F08,$4E7561F2,$700541F9
Data $50000,$610C7003,$61087004,$61046000,$FDCC41F9,$30000,$23480028
Data $237C0000,$4000024,$42A9002C,$3340001C,$4EAEFE38,$4E75202E,$3E204E
Data $4BF900FC,$2800C65,$21FC66FA,$99CC4DF8,$6762640,$43F900DF,$F096203C
Data $7FFF7FFF,$22C022C0,$4EE8FFE2,$1002200,$1020001,$920020,$9400D8
Data $8E3000,$9030FF,$E00007,$E28870,$E40007,$E688A0,$1860AAA
Data $1840EEE,$1820777,$1800002,$FFFFFFFE,$223C3C3C,$3C3C3C20,$5554494C
Data $49545920,$424F4F54,$2056322E,$30203E3E,$3E3E3E3E,$35464153,$544D454D
Data $3A4F4646,$20202020,$20203120,$4D454720,$43484950,$3A4F4646,$2C202044
Data $46313A4F,$46462020,$20444632,$3A4F4646,$20202044,$46333A4F,$46462020
Data $43463120,$46415354,$4D454D20,$4F464620,$46322043,$4849502F,$46415354
Data $204F4646,$4C463320,$414C4C20,$4D454D20,$4F4E2020,$4634204B,$494C4C20
Data $44524956,$45532120,$55463520,$48415244,$20524553,$45542020,$46362049
Data $4E535441,$4C4C2042,$4F4F5420,$5E463720,$544F4747,$4C45204C,$45442020
Data $46382054,$4F472050,$414C2F4E,$54534320,$6C20204E,$4F205649,$52555320
Data $48415320,$4245454E,$20444554,$45435445,$44212020,$75424F4F,$54204259
Data $20204E2E,$4F2E4D2E,$412E4420,$204F4620,$51554152,$54455821,$0
Data $0,$646F732E,$6C696272,$61727900
'
_FEHLER:
XE=Errn
_ERROR[XE]
Resume Next
End Proc
Procedure _DPROTECT
If XSD=0 Then DEV$=XDISKNAMEB$ Else DEV$=XDISKNAMEA$
'
XPROTECT=0
If DEV$="" Then _TXT["No drive selected !"] : Pop Proc
If Not Exist(DEV$) Then _TXT[DEV$+" not available !"] : Pop Proc
'
Dir$=DEV$
DEV$=Dir$
DEV$=DEV$+Chr$(0)
Repeat
INFO$=Space$(40)+Chr$(0)
IN=Varptr(INFO$)
Dreg(1)=Varptr(DEV$)
Dreg(2)=-2
LVOLOCK=Doscall(-84)
Dreg(1)=LVOLOCK
Dreg(2)=IN
LVOINFO=Doscall(-114)
LVOUNLOCK=Doscall(-90)
Until Leek(IN+8)<84
'
XPROTECT=Leek(IN+8)
If XPROTECT=80 Then _TXT["Disk is write protected !"]
If XPROTECT=81 Then _TXT["Error occured... disk is not validated !"]